// 继承: 子类 实例 继承父类的属性和方法

//方案一: 原型链继承
//让子类的原型指向父类的实例;
//Child.prototype = new Parent();
//Child.prototype.constructor = Child;//为了保证原型链的完整性
/*
* 特点:
*   1. JS继承也不像其他语言中的继承一样(其他语言:子类继承父类,就是拷贝一份父类的属性和方法),js中他是把父类的实例放到子类的原型链上,子类实例想要去调用这些属性和方法的时候,实际上是基于__proto__原型链查找的形式去完成的
*   2. 子类实例可以直接修改父类上的方法(这样就会导致其他父类实例都会收到影响)
*   3. 父类中私有的属性和方法,在实现原型链继承之后都会变成子类公有的属性和方法
* */

//父类构造函数
function Parent(x){
    this.x = x;
}
//父类原型
Parent.prototype.getX = function (){
    console.log("getX",this.x)
}

//子类构造函数
function Child(y){
    this.y = y;
}
Child.prototype = new Parent(100);
Child.prototype.constructor = Child;
Child.prototype.getY = function (){
    console.log("getY",this.y)
}
//子类实例
let c1 = new Child(200);
// c1.y //200
// c1.getY() //getY 200

console.log(c1.x,c1.getX())

// c1.x //undefined
// c1.getX() //

